"""
测试用例的环境准备：setUp,打开浏览器，打开访问页面
测试用例环境还原：tearDown,关闭浏览器
执行测试用例： 1.unittest.main(),按照ASCII执行
            2.如果需要按次序执行测试用例，unittest.TextTestRunner
            把测试用例添加到测试套件中，然后执行。runner.run(suite)
            如果要使生成的测试报告更美观，使用HTMLTestRunner

判断测试用例是否通过：使用断言方法，assertEqual(a,b,msg),如果a==b，输出msg
                             assertIn(a,b,msg)，如果a in b,输出msg
                             msg可不写

如果测试用例不通过，就截图保存
"""
import time
import unittest

from selenium import webdriver
from selenium.webdriver.common import keys
from selenium.webdriver.common.by import By


class LoginTest(unittest.TestCase):
    def setUp(self) -> None:
        self.wd = webdriver.Chrome()
        # self.wd.maximize_window()
        self.wd.get("http://127.0.0.1/mgr/sign.html")
        self.wd.implicitly_wait(5)

    def tearDown(self) -> None:
        self.wd.quit()

    def test_login(self):
        # 定位到”用户名“,传入username
        self.wd.find_element(By.ID, "username").send_keys("byhy")
        # 定位到”密码“，传入pwd
        self.wd.find_element(By.ID, "password").send_keys('8888888')
        # 点击登录
        na = self.wd.find_element(By.XPATH, "/html/body/div/div[2]/div[1]/div[3]/div/button")
        na.click()

        time.sleep(1)
        # 获取错误提示信息
        ele = self.wd.switch_to.alert
        # msg = ele.text  # 获取警告框中的文本信息（登录后的提示信息，实际结果）
        # try:
        #     self.assertIn("111", msg)
        # except AssertionError as e:
        #     a = self.wd.switch_to.alert
        #     a.accept()
            # self.wd.get_screenshot_as_file('screenshot.png')
        self.wd.save_screenshot("111"+ ".png")
            # raise AssertionError
if __name__ == '__main__':
    unittest.main()
    